home *** CD-ROM | disk | FTP | other *** search
- ;this program uses the task oriented ctp routine to display
- ;a simple picture.
-
- include "workbench:utilities/devpac/system.gs"
-
- scrwid EQU 192
- scrht EQU 160
- ;first open a screen and allocate a chunky buffer
- move.l 4.w,a6
- move.l #INTUINAME,a1
- move.l #36,d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,INTUIBASE
- beq nointui
-
- move.l 4.w,a6
- move.l #GFXNAME,a1
- move.l #36,d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,GFXBASE
- beq nogfx
-
- move.l #0,a0
- move.l #MYSCREENTAGS,a1
- move.l INTUIBASE,a6
- jsr _LVOOpenScreenTagList(a6)
- move.l d0,SCREENBASE
- beq noscreen
-
- move.l 4.w,a6
- move.l #scrwid*scrht,d0
- move.l #0,d1 ;best possible memory
- jsr _LVOAllocMem(a6)
- move.l d0,CHUNKYBUFFER
- beq nochunky
-
- move.l #scrwid*scrht,d0
- move.l #0,d1 ;best possible memory
- jsr _LVOAllocMem(a6)
- move.l d0,CHUNKYCOMPARE
- beq nochunkycomp
-
- move.l #scrwid*scrht,d0
- move.l #MEMF_CHIP,d1
- jsr _LVOAllocMem(a6)
- move.l d0,CHIPBUF1
- beq nochipbuf1
-
- move.l #scrwid*scrht,d0
- move.l #MEMF_CHIP,d1
- jsr _LVOAllocMem(a6)
- move.l d0,CHIPBUF2
- beq nochipbuf2
-
- move.l 4.w,a6
- move.l #-1,d0
- jsr _LVOAllocSignal(a6)
- move.l d0,SIG1
- blt nosig1
-
- move.l 4.w,a6
- move.l #-1,d0
- jsr _LVOAllocSignal(a6)
- move.l d0,SIG2
- blt nosig2
-
- ;set the signals to say that the previous ctp conversion
- ;has been completed
- move.l 4.w,a6
- move.l SIG1,d0
- or.l SIG2,d0
- move.l d0,d1
- jsr _LVOSetSignal(a6)
-
- ;initialise ctp routine
- move.l CHUNKYBUFFER,a0 ;chunky buffer
- move.l CHUNKYCOMPARE,a1 ;chunky compare buffer
- move.l SCREENBASE,a2
- lea sc_BitMap(a2),a2
- lea bm_Planes(a2),a2 ;plane pointer
- move.l GFXBASE,a3
- move.l #1,d0 ;signals1
- move.l #2,d1 ;signals2
- move.l #scrwid*scrht,d2 ;number of pixels
- move.l #0,d3 ;byte offset
- move.l CHIPBUF1,d4
- move.l CHIPBUF2,d5
- jsr _c2p8_init
-
- notzerozero:
- move.w YPOS,d0
- mulu.w #scrwid,d0
- add.w XPOS,d0
- move.l CHUNKYBUFFER,a0
- add.b #1,(a0,d0.w)
- move.w XPOS,d0
- add.w #1,d0
- cmp.w #scrwid,d0
- blt.s notoffright
- move.w #0,d0
- move.w YPOS,d1
- add.w #1,d1
- cmp.w #scrht,d1
- blt.s notoffbottom
- move.w #0,d1
- notoffbottom:
- move.w d1,YPOS
- notoffright:
- move.w d0,XPOS
-
- move.l GFXBASE,a6
- jsr _LVOWaitTOF(a6)
- jsr _c2p8_go
- move.w #$f00,$dff180
-
- move.l SCREENBASE,a0
- move.w sc_MouseX(a0),d0
- bne.s notzerozero
- move.w sc_MouseY(a0),d0
- bne.s notzerozero
-
- move.l 4.w,a6
- move.l SIG2,d0
- jsr _LVOFreeSignal(a6)
- nosig2:
- move.l 4.w,a6
- move.l SIG1,d0
- jsr _LVOFreeSignal(a6)
- nosig1:
- move.l CHIPBUF2,a1
- move.l #scrwid*scrht/8,d0
- move.l 4.w,a6
- jsr _LVOFreeMem(a6)
- nochipbuf2:
- move.l CHIPBUF1,a1
- move.l #scrwid*scrht/8,d0
- move.l 4.w,a6
- jsr _LVOFreeMem(a6)
- nochipbuf1:
- move.l CHUNKYCOMPARE,a1
- move.l #scrwid*scrht/8,d0
- move.l 4.w,a6
- jsr _LVOFreeMem(a6)
- nochunkycomp:
- move.l CHUNKYBUFFER,a1
- move.l #scrwid*scrht/8,d0
- move.l 4.w,a6
- jsr _LVOFreeMem(a6)
- nochunky:
- move.l SCREENBASE,a0
- move.l INTUIBASE,a6
- jsr _LVOCloseScreen(a6)
- noscreen:
- move.l GFXBASE,a1
- move.l 4.w,a6
- jsr _LVOCloseLibrary(a6)
- nogfx:
- move.l INTUIBASE,a1
- move.l 4.w,a6
- jsr _LVOCloseLibrary(a6)
- nointui:
- rts
-
- INTUIBASE: dc.l 0
- GFXBASE: dc.l 0
- SIG1: dc.l 0
- SIG2: dc.l 0
- INTUINAME: dc.b "intuition.library",0
- GFXNAME: dc.b "graphics.library",0
- even
- MYSCREENTAGS:
- dc.l SA_Width,scrwid
- dc.l SA_Height,scrht
- dc.l SA_Depth,8
- ; dc.l SA_DisplayID
- ; dc.l LORES_KEY
- dc.l SA_Quiet,-1
- dc.l SA_AutoScroll,-1
- dc.l -1,-1
- SCREENBASE: dc.l 0
- CHUNKYBUFFER: dc.l 0
- CHUNKYCOMPARE: dc.l 0
- CHIPBUF1: dc.l 0
- CHIPBUF2: dc.l 0
- XPOS: dc.w 0
- YPOS: dc.w 0
-
- even
- include "ab3:source_4000/somethingstrange2.s"
-